package org.achao.publisher;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author achao
 * @description 发送测试<br>
 * 使用RabbitMq官网案例
 * @date 2023/10/25 22:14
 */
public class Publisher {


    /**
     * 简单mq快速入门（先跳过交换机）
     * 生产者 --> 队列 --> 消费者
     * 此处为生产者代码
     */
    public static void main(String[] args) {
        // 1. 创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("121.37.241.70");
        connectionFactory.setUsername("achao");
        connectionFactory.setPassword("125614");

        try {
            // 2. 创建连接
            Connection connection = connectionFactory.newConnection();
            // 3. 创建信道
            Channel channel = connection.createChannel();
            // 4. 创建队列
            /**
             * - 队列名称
             * - 队列信息是否持久化（磁盘）默认情况将消息存储在内存中
             * - 该队列是否只提供一个消费者进行消费 是否进行信息共享 true标识可以多个消费者 false标识只能一个消费者
             * - 是否自动删除 最后一个消费者断开连接之后 该队列是否自动删除 true标识自动删除 false标识不自动删除
             * - 其他（高级用法）
             */
            channel.queueDeclare("hello", false, false, false, null);

            // 5. 发送消息
            /**
             * - 交换机
             * - 路由的Key（Binding）
             * - 其他参数信息
             * - 发送的消息体
             */
            channel.basicPublish("","hello",null,"hello".getBytes());
            System.out.println("消息发送完毕");
        } catch (IOException | TimeoutException e) {
            throw new RuntimeException(e);
        }
    }
}
